package com.usian.common.exception;/*
 *文件名：ExceptionCatch
 *创建者：宋璟
 *创建时间:2023/2/3 18:42
 *描述: TODO
 */

import com.usian.model.common.dtos.ResponseResult;
import com.usian.model.common.enums.AppHttpCodeEnum;
import lombok.extern.log4j.Log4j2;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseBody;

@ControllerAdvice//控制器增强
@Log4j2
public class ExceptionCatch {


    //捕获Exception此类异常
    @ExceptionHandler(Exception.class)  //
    @ResponseBody
    public ResponseResult exception(Exception exception) {
        exception.printStackTrace();  //全部的日志  包括你的报错信息
        //记录日志
        log.error("catch exception:{}", exception.getMessage()); //这边主要是框架给你做的字符串拼接  exception.getMessage这边就是比较精确的报错信息
        //exception.getMessage() 会和 "catch exception:{}" 进行拼接  框架封装的一个写法
        //返回通用异常
        if (exception instanceof ArithmeticException) {

            return ResponseResult.errorResult(AppHttpCodeEnum.ARITH_ERROR);
        }
        return ResponseResult.errorResult(AppHttpCodeEnum.SERVER_ERROR);
    }
}